TCP/IP services. How does the networking system work?
6.2. Q - Where do I start in understanding the source code? (Cont)
12. An ACK is sent back, to the network client, that corresponds to the TCP/IP
packet sequence we just got.
13. From our side, the telnet server wakes up as a result of the wakeup call
which arrives via the MSG_GOT_TELNET message queue.
All the data is read from the socket, processed and a reply is put in the
transmit queue.
A TCPFlush() is called to send the data.
14. TCPFlush() eventually calls TransmitTCP(), in tcpxmit.c, to send that packet.
TransmitTCP() puts a message on the MSG_TCP_TX queue.
15. TaskTransmitTCP(), in tcpxmit.c, wakes up as a result of the MSG_TCP_TX
message.
The appropriate message header is built on the transmit buffer in the
RTL8019AS memory.
MACFlush() is called to send the message over the Ethernet.
The transmit buffer is not deleted from memory yet.
16. When the network client receives the data packet (as opposed to a simple ACK)
it sends back an ACK of its own.
When this ACK reaches us, we release the transmit buffer.
This back-and-forth continues until someone decides to close the socket or the
connection is somehow dropped.